#include<stdio.h>

void swap(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

void heapAdjust(int a[], int k, int len)
{
	a[0] = a[k];
	for(int i = k * 2; i <= len; i*=2)
	{
		if(i < len && a[i] < a[i + 1]) i++;
		if(a[0] >= a[i]) return;
		else
		{
			a[k] = a[i];
			k = i;
		}
	}
	a[k] = a[0];
}

void buildMaxHeap(int a[], int len)
{
	for(int i = len / 2; i > 0; i--)
	{
		heapAdjust(a, i, len);	
	}	
} 

void heapSort(int a[], int len)
{
	buildMaxHeap(a, len);
	for(int i = len; i > 1; i--)
	{
		swap(&a[1], &a[i]);
		heapAdjust(a, 1, i - 1);	
	} 
}


int main()
{
	int n;
	scanf("%d", &n);
	int a[n + 1];
	for(int i = 1; i < n + 1; i++) scanf("%d", &a[i]);
	heapSort(a, n);
	for(int i = 1; i < n + 1; i++) printf("%d ", a[i]);
	return 0;
}
